package com.ruoyi.quartz.task;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.domain.AttendanceRecord;
import com.ruoyi.common.domain.Emply;
import com.ruoyi.common.domain.Holidays;
import com.ruoyi.quartz.service.ISysJobService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.ruoyi.common.utils.StringUtils;

import java.util.List;

/**
 * 定时任务调度测试
 * 
 * @author ruoyi
 */
@Component("ryTask")
public class RyTask{

    @Autowired
    private ISysJobService sysJobService;

    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
    {
        System.out.println(StringUtils.format("执行多参方法： 字符串类型{}，布尔类型{}，长整型{}，浮点型{}，整形{}", s, b, l, d, i));
    }

    public void ryParams(String startDate, String endDate){
        run(startDate, endDate);
    }

    public void autoRun(){
        String currentDate = DateUtils.getDate();
        run(currentDate, currentDate);
    }

    public void run(String startDate, String endDate){

        List<Holidays> holidaysList = getDate(startDate, endDate);
        try {
            List<Emply> emplyList = sysJobService.getEmplyList();
            for (Holidays day : holidaysList) {
                List<AttendanceRecord> attendanceRecordList = sysJobService.getToDayAttendanceInfo(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, day.getDate()));
                sysJobService.dealAttendanceInfo(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, day.getDate()), day, attendanceRecordList, emplyList);
                System.out.println("执行有参方法：" + day.getDate());
                Thread.sleep(1000);
            }
        } catch (Exception e){
            e.printStackTrace();
        }
    }

    public List<Holidays> getDate(String startDate, String endDate){
        return  sysJobService.getHolidaysByDate(startDate, endDate);
    }

    public void ryNoParams(){
        System.out.println("....");
    }

    public void genHolidays(String params)
    {
        sysJobService.genHolidays(params);
    }
}
